package com.bdqn.demo;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;

/**
 * 示例4：通过反射获取类的方法
 *
 * @author LILIBO
 * @since 2022-09-15
 */
public class Demo04 {

    public static void main(String[] args) {
        // 通过Class.forName()方法获取Class对象
        Class clazz = null;
        try {
            clazz = Class.forName("com.bdqn.pojo.Student");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        // 获得所有方法
        System.out.println("获得所有方法: ");
        Method[] declaredMethods = clazz.getDeclaredMethods();
        for (Method dm : declaredMethods) {
            // 获得返回类型 getReturnType()
            // 获得参数类型列表 getParameterTypes()
            System.out.println((Modifier.isPublic(dm.getModifiers()) ? "public " : "") + dm.getReturnType().getSimpleName() + " " + dm.getName() + "(" + Arrays.toString(dm.getParameterTypes()) + ") throws " + Arrays.toString(dm.getExceptionTypes()));
        }
    }

}
